# Введение

Привет, читатель! Прежде чем создать свою игру на питоне, мне бы хотелось обсудить несколько вопросов:

1. «Как человеку заняться геймдевом?»
2. Зачем писать игру на питоне, если есть unity и unreal engine?

Обычно есть два пути, как человек попадает в геймдев:

1. Умышленный путь. Человек, играющий в игры, увлекается ими настолько, что у него возникает желание их создавать. Тогда он выбирает, где и как ему учится. Он учится работать с игровыми движками и изучает C-образные языки.
2. Путь программистов. Так или иначе везде, где есть код — есть компьютер. Цифровые развлечения, в том числе игры, не проходят мимо тех людей, которые постоянно пишут код. Поэтому [некоторым программистам становится интересно попробовать свои силы в разработке собственной игры](https://www.stxnext.com/blog/python-for-game-development/). Об этом пути мы и поговорим.

Конечно можно сказать, что если ты хочешь работать — иди учись и получай нужные навыки. Осваивай Unity или Unreal и работай в крутой [геймдев-компании](https://dtf.ru/gameindustry/1033019-igrovye-studii-i-mesta-ih-obitaniya-v-rossii). В этом есть доля правды. Однако, превращать любое своё хобби в работу — дело не благоразумное. Выгорание скажет об этом достаточно понятно. Тогда вам могут предложить сделать либо мод на игру (например, [на движке Source](https://skillbox.ru/media/gamedev/7-igr-na-source-sozdannykh-za-predelami-valve/)) или поиграть в [Грёзы](https://dtf.ru/games/51311-interaktivnye-grezy-kak-ustroen-redaktor-dreams-i-chto-tam-mozhno-sozdat), которая тоже очень популярна. Такой вариант вполне подойдёт, но появляется новая проблема: "Выбор варианта работы".

**Выбор варианта работы**

Есть три варианта работы над игрой:

1. Создать игру на известном движке-конструкторе
2. Сделать мод на существующий движок
3. Создать свой движок и написать игру

Каждый из этих вариантов хорош по-своему, но и имеет ряд недоработок. Например, выбрав путь создания игры на популярном движке вы столкнётесь с проблемами самого движка, а главное — с проблемами монетизации проекта. Если выбрать модопуть — вы сразу столкнётесь с тем, что не каждый движок открыт для написания игр, а также, не каждый движок позволяет продавать мод хоть за какую-то цену. Путь написания своего движка вызывает в геймдеве дикий припадок, мол "Да зачем опять идти очень сложно, когда сроки горят, а сам ты ещё не доработал концепцию?". Данный путь весьма не популярен для общества из-за сложности реализации и проблем с набором хоть какой-то команды, ведь если вы пишете движок, кому-то с ним работать.

Так зачем выбирать "сложный" путь? Во-первых, не для всех он сложнее. Лично мне сложнее перейти на C# с использованием Unity, чем написать новый проект на Python. Во-вторых, люди не всегда понимают сам движок. Сейчас я преподаю в [институте "Бизнеса и Дизайна"](https://obe.ru/). Это одно из первых профильных учреждений, где обучают геймдеву. Я спросил у студентов: «зачем им движок?». Каково было моё удивление, что далеко не все понимаю, вообще зачем он нужен. Спойлер, не из-за пресетов.

**Зачем вам движок?!**

По сути, движок решает всего лишь три, но очень важных вопроса:

1. **Физика**. Если вы окончили физмат, вы понимаете насколько сложно определить и прописать траекторию падения стеклянного шара весом в 2 килограмма на доску из дуба, которая лежит под углом 32 градуса. Также, нужно не забыть прописать с какой высоты должен упасть шар, чтобы разбиться. Движок прописывает эту физику за вас, а вы лишь обращаетесь к тем или иным объектам.
2. **Тайлсеты**. Тайл — это маленькие картинки для прорисовки графики (чаще всего, карт). Процесс создания тайлов [весьма энергозатратный](https://habr.com/ru/articles/470099/), а наложение этих тайлов достаточно простое дело. Просто выбрать где лежит камень, а где земле или вода. В движках типа Unreal или Unity можно выбрать слой карты и нарисовать клеточками из тайтлов карту.
3. **Анимация**. Самый спорный пункт. В движках все элементы на карте — это объекты. Каждый объект имеет форму по координатам x, y, z и их можно менять прямо в самом движке путём перемещения, сжатия или растягивания объекта. Но важное уточнение, прорисовывать анимацию по x, y, z — не самая лучшая идея. Куда надёжнее, красивее и вообще правильнее прописывать каждый шаг объекта путём перемещения по пресету персонажа по графике.

Иными словами, сам игровой движок — это автоматизирующая система, которая позволяет упростить разработку. Однако, при использовании движка теряется часть гибкости в настройках. Моя задача — описать как можно более подробный процесс написания игры по самому сложному пути, хотя Python и упрощает часть вещей.

Я решил писать игру на языке Python, потому что я его хорошо знаю и он для меня удобен. Я обожаю игры, но выучивать новый язык только для того, чтобы написать игру - на мой взгляд, очень муторно. Своим примером я хочу показать, что нет ничего невозможного. Даже с питона можно начать свой путь в игровую индустрию!

Эта книга будет интересна всем, кто начал своё знакомство с языком Python. В книге будет объясняться все вопросы, которые затрагивают игровые механики. Минимальны порог входа для прочтения данной книги — пройденный курс ["Поколение Python": курс для начинающих](https://stepik.org/course/58852/syllabus).

Автор книги - Валерий Линьков: более 8 лет в IT-образовании от сетей до змей!

<figure><img src=".gitbook/assets/photo_2022-09-26_09-02-14.jpg" alt="" width="320"><figcaption><p>Валерий Линьков</p></figcaption></figure>

Редактор - Анастасия Линькова: более 7 лет объясняет сложные вещи простыми словами.

<figure><img src=".gitbook/assets/photo_2024-04-10_17-36-23.jpg" alt="" width="375"><figcaption><p>Анастасия Линькова</p></figcaption></figure>

Если вы нашли ошибки - напишите на почту [admin@montirovka.com](mailto:admin@montirovka.com) . Пришлем вам презент за вашу внимательность :)

[Читать далее →](podgotovka.md)

[← Вернуться назад](README.md)

[↑ Назад к содержанию ↑](SUMMARY.md)